package com.iaz.tech.tools.ai.neuron.ability;

import java.util.List;

import com.iaz.tech.tools.message.IMessageAble;
import com.iaz.tech.tools.property.IPropertyAble;
import com.iaz.tech.tools.uml.IUMLNeuronAble;

/**
 * 神经元UML解析能力
 */
public interface INeuronUMLParserAbility {
	/**
	 * 预备执行
	 * @param uml
	 * @param msg
	 * @param _property
	 * @return
	 */
	List<IPropertyAble> prepareExecute(
			INeuronAbility neuron,
			String projectID,
			IUMLNeuronAble mainuml, 
			List<IMessageAble> msg, 
			IPropertyAble _property);
	/**
	 * 执行
	 * @param uml
	 * @param msg
	 * @param _property
	 * @return
	 */
	List<IPropertyAble> execute(
			INeuronAbility neuron,
			String projectID,
			IUMLNeuronAble mainuml,
			List<IMessageAble> msg, 
			IPropertyAble _property);
	/**
	 * 执行完成
	 * @param uml
	 * @param msg
	 * @param _property
	 * @return
	 */
	List<IPropertyAble> finishExecute(
			INeuronAbility neuron,
			String projectID,
			IUMLNeuronAble mainuml,
			List<IMessageAble> msg,
			IPropertyAble _property);
}
